import { quality, EffectClassType, SkillType, TargetType, LogType, effectKey, Attribute_base, attackKey } from "../../../../../shared/face/enums";
import { _Skill } from "../../../types";

/**
 * 灵魂吸取技能
 * @description 每次使用后伤害永久提升1点
 * 
 * 技能特点:
 * - 基础伤害: 100点物理伤害
 * - 永久提升: 每次使用后伤害+1
 * - 冷却时间: 3回合
 * - 目标类型: 敌方单体
 */
export const soulDrainSkill: _Skill = {
    /** 技能唯一标识符 */
    id: 'SOUL_DRAIN',
    /** 技能品质等级 - C级普通技能 */
    quality: quality.C,
    /** 技能分类 - 攻击型技能 */
    classType: EffectClassType.攻击型,
    /** 技能显示名称 */
    name: '灵魂吸取',
    /** 技能描述文本 */
    desc: '对目标造成{effect}点物理伤害，每次施放此技能后，技能伤害永久提升1,已提升{boostAmount.attRange}',
    /** 技能数据配置 */
    data: [{
        /** 攻击类型 - 使用物理攻击力计算伤害 */
        attKey: attackKey.物理攻击,
        /** 攻击倍率 - 100%物理攻击力 */
        attRange: 1.0,
        /** 固定伤害 - 额外100点固定伤害 */
        fixed: 100,
        /** 永久提升配置 - 每次使用后伤害永久提升1点 */
        permanentBoost: {
            /** 提升类型 - 伤害提升 */
            type: 'damage',
            /** 提升数值 - 每次+1点伤害 */
            amount: 1
        },
        levelUpBoost: {
            attRange: 0.1,  // 每次升级提升0.1的attRange
            fixed: 10
        }
    }],
    /** 技能效果类型 - 物理伤害 */
    effect: [effectKey.伤害类_物理伤害],
    /** 冷却回合数 - 3回合冷却 */
    cooldown: 3,
    /** 技能类型 - 主动技能 */
    type: SkillType.主动技能,
    /** 目标类型 - 只能对敌方使用 */
    targetType: [TargetType.敌方]
};

/**
 * 火焰强化技能
 * @description 每次使用后攻击倍率永久提升
 * 
 * 技能特点:
 * - 基础伤害: 150%魔法攻击力 + 50点固定伤害
 * - 永久提升: 每次使用后攻击倍率+0.1
 * - 冷却时间: 2回合
 * - 目标类型: 敌方单体
 */
export const flameEnhancementSkill: _Skill = {
    /** 技能唯一标识符 */
    id: 'FLAME_ENHANCEMENT',
    /** 技能品质等级 - B级稀有技能 */
    quality: quality.B,
    /** 技能分类 - 攻击型技能 */
    classType: EffectClassType.攻击型,
    /** 技能显示名称 */
    name: '火焰强化',
    /** 技能描述文本 */
    desc: '对目标造成{effect}点魔法伤害，每次使用后永久提升10%伤害，已提升{boostAmount.attRange}%',
    /** 技能数据配置 */
    data: [{
        /** 攻击类型 - 使用魔法攻击力计算伤害 */
        attKey: attackKey.魔法攻击,
        /** 攻击倍率 - 150%魔法攻击力 */
        attRange: 1.5,
        /** 固定伤害 - 额外50点固定伤害 */
        fixed: 50,
        /** 永久提升配置 - 每次使用后攻击倍率永久提升0.1 */
        permanentBoost: {
            /** 提升类型 - 攻击倍率提升 */
            type: 'attRange',
            /** 提升数值 - 每次+0.1倍率 */
            amount: 0.1
        },
        levelUpBoost: {
            attRange: 0.1,  // 每次升级提升0.1的attRange
            fixed: 10
        }
    }],
    /** 技能效果类型 - 魔法伤害 */
    effect: [effectKey.伤害类_魔法伤害],
    /** 冷却回合数 - 2回合冷却 */
    cooldown: 2,
    /** 技能类型 - 主动技能 */
    type: SkillType.主动技能,
    /** 目标类型 - 只能对敌方使用 */
    targetType: [TargetType.敌方]
};

/**
 * 战斗本能技能
 * @description 每次使用后冷却时间永久减少
 * 
 * 技能特点:
 * - 基础伤害: 120%物理攻击力 + 80点固定伤害
 * - 永久提升: 每次使用后冷却时间-0.5回合
 * - 冷却时间: 4回合
 * - 目标类型: 敌方单体
 */
export const battleInstinctSkill: _Skill = {
    /** 技能唯一标识符 */
    id: 'BATTLE_INSTINCT',
    /** 技能品质等级 - A级史诗技能 */
    quality: quality.A,
    /** 技能分类 - 全能型技能 */
    classType: EffectClassType.全能型,
    /** 技能显示名称 */
    name: '战斗本能',
    /** 技能描述文本 */
    desc: '对目标造成{effect}点物理伤害，每次使用后技能冷却时间永久减少，已减少{boostAmount.cooldown}回合冷却',
    /** 技能数据配置 */
    data: [{
        /** 攻击类型 - 使用物理攻击力计算伤害 */
        attKey: attackKey.物理攻击,
        /** 攻击倍率 - 120%物理攻击力 */
        attRange: 1.2,
        /** 固定伤害 - 额外80点固定伤害 */
        fixed: 80,
        /** 永久提升配置 - 每次使用后冷却时间永久减少0.5回合 */
        permanentBoost: {
            /** 提升类型 - 冷却时间减少 */
            type: 'cooldown',
            /** 提升数值 - 每次-0.5回合冷却 */
            amount: 0.5
        }
    }],
    /** 技能效果类型 - 物理伤害 */
    effect: [effectKey.伤害类_物理伤害],
    /** 冷却回合数 - 4回合冷却 */
    cooldown: 4,
    /** 技能类型 - 主动技能 */
    type: SkillType.主动技能,
    /** 目标类型 - 只能对敌方使用 */
    targetType: [TargetType.敌方]
};

/**
 * 多重效果技能示例
 * @description 包含伤害、治疗和buff效果的复合技能
 * 
 * 技能特点:
 * - 主要伤害: 120%物理攻击力 + 60点固定伤害
 * - 次要伤害: 80%魔法攻击力 + 40点固定伤害
 * - 治疗效果: 恢复自身50点生命值
 * - 附加效果: 添加"燃烧"buff
 * - 冷却时间: 4回合
 * - 目标类型: 敌方单体
 */
export const multiEffectSkill: _Skill = {
    /** 技能唯一标识符 */
    id: 'MULTI_EFFECT_SKILL',
    /** 技能品质等级 - S级传说技能 */
    quality: quality.S,
    /** 技能分类 - 全能型技能 */
    classType: EffectClassType.全能型,
    /** 技能显示名称 */
    name: '多重效果技能',
    /** 技能描述文本 */
    desc: '对目标造成{effects}，每次使用后攻击倍率永久提升，已提升{boostAmount.attRange}%',
    /** 技能数据配置 */
    data: [
        {
            /** 主要攻击 - 物理伤害 */
            attKey: attackKey.物理攻击,
            /** 攻击倍率 - 120%物理攻击力 */
            attRange: 1.2,
            /** 固定伤害 - 额外60点固定伤害 */
            fixed: 60,
            /** 永久提升配置 - 每次使用后攻击倍率永久提升0.1 */
            permanentBoost: {
                /** 提升类型 - 攻击倍率提升 */
                type: 'attRange',
                /** 提升数值 - 每次+0.1倍率 */
                amount: 0.1
            }
        },
        {
            /** 次要攻击 - 魔法伤害 */
            attKey: attackKey.魔法攻击,
            /** 攻击倍率 - 80%魔法攻击力 */
            attRange: 0.8,
            /** 固定伤害 - 额外40点固定伤害 */
            fixed: 40,
        },
        {
            /** 治疗效果 */
            attKey: '恢复生命',
            /** 治疗数值 */
            healing: 50
        },
        {
            /** Buff效果 */
            addBuffName: '燃烧'
        }
    ],
    /** 技能效果类型 - 物理伤害 + 魔法伤害 + 治疗 + buff */
    effect: [effectKey.伤害类_物理伤害, effectKey.伤害类_魔法伤害, effectKey.辅助类_生命回复, effectKey.工具类_添加buff],
    /** 冷却回合数 - 4回合冷却 */
    cooldown: 4,
    /** 技能类型 - 主动技能 */
    type: SkillType.主动技能,
    /** 目标类型 - 物理伤害对敌方，魔法伤害对敌方，治疗对自己，buff对敌方 */
    targetType: [TargetType.敌方, TargetType.敌方, TargetType.自己, TargetType.敌方]
};

/**
 * 击杀强化技能
 * @description 击杀敌人时永久提升攻击力
 * 
 * 技能特点:
 * - 基础伤害: 100%物理攻击力 + 80点固定伤害
 * - 永久提升: 击杀敌人时攻击力+2点
 * - 冷却时间: 3回合
 * - 目标类型: 敌方单体
 */
export const killEnhancementSkill: _Skill = {
    /** 技能唯一标识符 */
    id: 'KILL_ENHANCEMENT',
    /** 技能品质等级 - A级史诗技能 */
    quality: quality.A,
    /** 技能分类 - 攻击型技能 */
    classType: EffectClassType.攻击型,
    /** 技能显示名称 */
    name: '击杀强化',
    /** 技能描述文本 */
    desc: '对目标造成{effect}点物理伤害，击杀敌人时攻击力永久提升，已提升{boostAmount.damage}点',
    /** 技能数据配置 */
    data: [{
        /** 攻击类型 - 使用物理攻击力计算伤害 */
        attKey: attackKey.物理攻击,
        /** 攻击倍率 - 100%物理攻击力 */
        attRange: 1.0,
        /** 固定伤害 - 额外80点固定伤害 */
        fixed: 80,
        /** 永久提升配置 - 击杀敌人时攻击力永久提升2点 */
        permanentBoost: {
            /** 提升类型 - 攻击力提升 */
            type: 'damage',
            /** 提升数值 - 每次+2点攻击力 */
            amount: 2,
            /** 触发条件 - 击杀敌人 */
            condition: 'kill',
            /** 条件参数 */
            conditionParams: {
                targetType: 'enemy'
            },
            /** 条件描述 */
            conditionDesc: '击杀敌人时'
        }
    }],
    /** 技能效果类型 - 物理伤害 */
    effect: [effectKey.伤害类_物理伤害],
    /** 冷却回合数 - 3回合冷却 */
    cooldown: 3,
    /** 技能类型 - 主动技能 */
    type: SkillType.主动技能,
    /** 目标类型 - 只能对敌方使用 */
    targetType: [TargetType.敌方]
};

/**
 * 暴击强化技能
 * @description 暴击时永久提升暴击率
 * 
 * 技能特点:
 * - 基础伤害: 120%物理攻击力 + 60点固定伤害
 * - 永久提升: 暴击时暴击率+1%
 * - 冷却时间: 2回合
 * - 目标类型: 敌方单体
 */
export const criticalEnhancementSkill: _Skill = {
    /** 技能唯一标识符 */
    id: 'CRITICAL_ENHANCEMENT',
    /** 技能品质等级 - S级传说技能 */
    quality: quality.S,
    /** 技能分类 - 攻击型技能 */
    classType: EffectClassType.攻击型,
    /** 技能显示名称 */
    name: '暴击强化',
    /** 技能描述文本 */
    desc: '对目标造成{effect}点物理伤害，暴击时暴击率永久提升，已提升{boostAmount.criticalRate}%',
    /** 技能数据配置 */
    data: [{
        /** 攻击类型 - 使用物理攻击力计算伤害 */
        attKey: attackKey.物理攻击,
        /** 攻击倍率 - 120%物理攻击力 */
        attRange: 1.2,
        /** 固定伤害 - 额外60点固定伤害 */
        fixed: 60,
        /** 永久提升配置 - 暴击时暴击率永久提升1% */
        permanentBoost: {
            /** 提升类型 - 暴击率提升 */
            type: 'criticalRate',
            /** 提升数值 - 每次+1%暴击率 */
            amount: 1,
            /** 触发条件 - 暴击 */
            condition: 'critical',
            /** 条件描述 */
            conditionDesc: '暴击时'
        }
    }],
    /** 技能效果类型 - 物理伤害 */
    effect: [effectKey.伤害类_物理伤害],
    /** 冷却回合数 - 2回合冷却 */
    cooldown: 2,
    /** 技能类型 - 主动技能 */
    type: SkillType.主动技能,
    /** 目标类型 - 只能对敌方使用 */
    targetType: [TargetType.敌方]
};

// 示例技能列表
export const permanentBoostSkills = [
    soulDrainSkill,
    flameEnhancementSkill,
    battleInstinctSkill,
    multiEffectSkill,
    killEnhancementSkill,
    criticalEnhancementSkill
];

// 默认导出，供技能加载器使用
export default permanentBoostSkills; 